Computing systems have undergone a sea change over the last few decades. Gone are the days when computers were basically used to perform basic tasks such as data entry, word processing, spread sheet preparation, etc. With the advent of faster processors and a plethora of hardware related advances, computers are being used to perform a multitude of high-end tasks, such as, advanced mathematical computation, high end graphics, top of the order gaming and animation, etc. All these tasks, and many others, perform a tremendous amount of demand on a computing device's resources. Be it a standalone personal computer or a multi-processor server computer, resources of each of these systems has to cope with a stream of task requests generated by multiple computer applications that may run on them.
To cope with multiple task requests on a resource, a computing system may provide for queuing of these requests. In this case, each task request would be processed by the resource one by one. There is also the option of allowing a resource to process multiple requests at the same time. However, there may be situations when an exclusive access to a resource may be required by a multiple of tasks. Exclusive access to resources is a common requirement in enterprise computing environments. Obtaining exclusive access to resources that are currently busy involves waiting for the resource in a time bound fashion or making periodic re-tries. This situation may not be desirable in certain cases, for example, when a critical task needs immediate access to a resource.